package com.lianjia.sh.se.kafka.client.annotion;

import java.lang.annotation.*;

/**
 * 消息发送注解
 *
 * @author yangjiangping
 * @since 2016-07-18 13:50
 */
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Inherited
public @interface KafkaSender {

    /**
     * 必须：被监听的主题
     * @return
     */
    String topic();

    /**
     * 非必须：kafka服务器ip及端口。如果不配置使用统一配置。
     * 多个以逗号分隔
     *
     * @return
     */
    String bootstrapServers() default "";

    /**
     * 发送频率：时间（单位：毫秒）。
     *
     * 批处理时，多久发送一次
     * @return
     */
    long lingerMs() default -1;

    /**
     * 发送频率：数据量（单位：字节）。
     *
     * 批处理时，多少消息后发送一次
     * @return
     */
    long batchSize() default -1;

    /**
     * 失败重试次数
     * @return
     */
    int retries() default -1;

    /**
     * acks 0,1,all
     * @return
     */
    String acks() default "";

    /**
     * 向服务器发送消息的请求超时时间
     * 单位：毫秒
     * @return
     */
    long requestTimeoutMs() default -1;

    /**
     * 缓冲大小
     * @return
     */
    long bufferMemory () default -1;

    /**
     * 标识当前监听者（一般使用应用名或应用名与业务名）
     * @return
     */
    String clientId() default "";

}
